Skip to content

jagaor/sshforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner

Arquitectura

architecture

Demo

demo

🇬🇧 Read this in English.

SSHForge

Python 3.11+ MIT License Tests

Genera configuraciones de sshd_config y fail2ban (jail.local) hardenizadas, auditadas y listas para producción en segundos.

Motivación

Según el informe SSH Hardening Guidelines de CIS, más del 70% de las brechas de seguridad en servidores Linux involucran configuraciones SSH débiles o por defecto. CVEs como CVE-2018-15473 (enumeración de usuarios) o CVE-2020-15778 (ejecución remota por SCP inseguro) son explotables cuando no se aplican directivas de endurecimiento. SSHForge automatiza la generación de configuraciones alineadas con CIS Benchmark SSH (sección 5) y NIST SP 800-123, reduciendo el riesgo de exposición.

Arquitectura

+---------+     +--------------+     +--------------+     +----------+     +----------+
|   CLI   | --> | ProfileLoader| --> | ConfigBuilder| --> | Auditor  | --> |  Output  |
| (Click) |     | (YAML)       |     | (Jinja2)     |     | (Rich)   |     | (Files)  |
+---------+     +--------------+     +--------------+     +----------+     +----------+
  • CLI: Interfaz de línea de comandos con Click.
  • ProfileLoader: Carga perfiles YAML desde profiles/.
  • ConfigBuilder: Fusiona perfil + argumentos CLI y renderiza plantillas Jinja2.
  • Auditor: Verifica cada directiva contra umbrales del perfil y genera puntuación.
  • Output: Escribe sshd_config, jail.local y audit_report.txt.

Instalación

git clone https://github.com/javiergarridoortiz/sshforge.git
cd sshforge
pip install -r requirements.txt

Uso

Perfil minimal

python src/main.py --profile minimal --port 2222 --output ./output_minimal

Perfil standard

python src/main.py --profile standard --user deploy --mfa totp --output ./output_standard

Perfil strict

python src/main.py --profile strict --port 2222 --user admin --mfa totp --output ./output_strict

Opciones CLI

Opción Descripción Valores
--profile Perfil de hardening minimal, standard, strict
--port Puerto SSH (por defecto 22) Entero
--user Usuario permitido String
--mfa Autenticación multifactor none, totp
--output Directorio de salida Ruta

Perfiles YAML

Cada perfil define directivas SSH y fail2ban con valores y justificaciones.

minimal

  • SSH: PermitRootLogin yes, PasswordAuthentication yes, X11Forwarding yes.
  • fail2ban: maxretry = 5, bantime = 600.
  • Uso: Entornos de desarrollo o pruebas internas.

standard

  • SSH: PermitRootLogin no, PasswordAuthentication no, X11Forwarding no, ClientAliveInterval 300.
  • fail2ban: maxretry = 3, bantime = 3600.
  • Uso: Servidores de producción estándar.

strict

  • SSH: PermitRootLogin no, PasswordAuthentication no, X11Forwarding no, ClientAliveInterval 120, MaxAuthTries 2, AllowUsers (solo usuario definido), PubkeyAuthentication yes.
  • fail2ban: maxretry = 2, bantime = 86400.
  • Uso: Entornos de alta seguridad (bancos, datos sensibles).

Referencias

  • CIS Benchmark for SSH (Section 5): CIS Controls
  • NIST SP 800-123: Guide to General Server Security (Secciones sobre SSH)

Aviso de uso responsable

SSHForge genera configuraciones que endurecen el acceso SSH. Antes de aplicarlas en producción, pruébalas en un entorno de pruebas. Una configuración incorrecta puede bloquear el acceso remoto. Asegúrate de tener acceso de consola o un método de recuperación.

Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

Autor

Javier Garrido Ortiz

About

Genera configs sshd_config y fail2ban hardenizadas, auditadas y listas para producción en segundos.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors